package com.tqjc.system.core.util;

import org.apache.commons.lang3.StringUtils;

/**
 * 自定义字符串工具类
 * 
 * @author teli_
 *
 */
public class MyStringUtils extends StringUtils {

	/**
	 * 是否包含字符串
	 * 
	 * @param str  验证字符串
	 * @param strs 字符串组
	 * @return 包含返回true
	 */
	public static boolean inStringIgnoreCase(String str, String... strs) {
		if (str != null && strs != null) {
			for (String s : strs) {
				if (str.equalsIgnoreCase(StringUtils.trim(s))) {
					return true;
				}
			}
		}
		return false;
	}


	/**
	 * 计算text中中文的个数
	 * @param text
	 * @return
	 */
	public static int getChineseNum(String text) {
		int chineseCharacterCount = 0;
		char[] charArray = text.toCharArray();

		for (char c : charArray) {
			// 使用Unicode范围来判断字符是否为中文
			if (c >= '\u4e00' && c <= '\u9fa5') {
				chineseCharacterCount++;
			}
		}

		return chineseCharacterCount;
	}



	/**
	 * 计算text的字符长度
	 * @param text
	 * @return
	 */
	public static int getCharactersLength(String text) {
		int chineseCharacterCount = 0;
		int num = 0;
		char[] charArray = text.toCharArray();

		for (char c : charArray) {
			// 使用Unicode范围来判断字符是否为中文
			if (c >= '\u4e00' && c <= '\u9fa5') {
				chineseCharacterCount++;
			} else {
				//非中文字符数量
				num++;
			}
		}
		// 一个中文字符占用两个char
		int charLength = chineseCharacterCount * 2 + num;

		return charLength;
	}


	/**
	 *
	 * @param ruleLenth  规则长度
	 * @param actLenth  实际长度
	 * @param text  字符串文本
	 * @return
	 */
	public static String buildStrByCharLenth(int ruleLenth,int actLenth,String text){

		StringBuilder sb = new StringBuilder(text);
		int num = ruleLenth - actLenth;
		if(num == 0){
			//实际长度与规则长度一致，直接返回字符文本
			return text;
		}

		for (int i = 0;i < num ;i++){
			sb.append(" ");
		}

		return sb.toString();

	}


}
